import fetch from '@/utils/request';
import port from '@/utils/url';

/**
 * @description 通用CRUD方法，介意post中对象属性名和该对象在其他地方的名字一致
 * @param {String} path [port]对象中的具体哪个对象
 * @param {String} [mode = 'object'] path的模式，可选值：string, object
 * @param {String} method 请求方法,默认POST
 * @param {Object} data 请求的参数对象,默认空
 * @param {Object} params get请求的参数对象
 */
export function request({ path, data = {}, params = {}, method = 'POST', mode = 'object' }) {
  let _url = port;
  if (mode === 'string') {
    // 路由形式，不处理path
    _url = path;
  } else if (mode === 'object') {
      const paths = path.split('/');
      if (!(paths && paths.length >= 2)) {
          throw new Error('请求路径存在异常，请检查 -> ' + JSON.stringify(paths));
      }
      paths.forEach(item => {
          _url = _url[item];
      });
  }
  if (!_url) throw new Error('未找到指定路径，请检查path -> ' + _url);
  return fetch({
    url: _url, // 设置了代理，所以这块只需要给请求后缀就行
    method: method,
    data, params
  });
}
